/**
 * @Author: Bobby
 * @Date: 2022-03-08 10:10:34
 * @LastEditTime: 2022-03-08 12:22:39
 * @LastEditors: Bobby
 * @Description:
 * @FilePath: \wms-v2\src\ve\mixin\refs\provide.js
 * @CIMC-V2
 */
export default {
  data() {
    return {
      vuiComponents: {},
    }
  },
  provide() {
    return {
      vuiComponents: this.vuiComponents,
      setChildrenRef: (name, ref) => {
        if (ref) {
          // 渲染完毕后再追加，否则v-for不断的push，
          // 数组不断改变，页面会不断渲染造成会有额外数据，
          // 而且页面会warn报错
          this.$nextTick(() => {
            this.vuiComponents[name] = {
              self: ref,
              ref: ref.$refs[name],
            }
            // 将组件实例记录到状态管理器 方便图层载入事件动作获取组件实例
            this.$store.dispatch('preview/setPageModuleRef', {
              moduleId: name,
              moduleRef: {
                self: ref,
                ref: ref.$refs[name],
              },
            })
          })
        }
      },
      // 主动获取 获取绑定的组件
      getChildrenRef() {
        return this.vuiComponents
      },
      // 获取根组件
      getRef: () => {
        return this
      },
    }
  },
}
